package com.sinog.front.controller.basic;

import com.sinog.core.model.UserDTO;
import com.sinog.core.util.JsonUtil;
import com.sinog.core.utilbean.Constants;
import com.sinog.core.utilbean.Result;
import com.sinog.front.config.log.Log;
import com.sinog.front.feign.basic.RoleService;
import com.sinog.front.service.user.UserFacade;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * @desc 系统管理 - 角色管理 - 角色管理 - RoleController
 * @author liuchaoyang
 * @date Created in 2019年07月08日  17点21分
 */
@RestController
public class RoleController {

    @Autowired
    private RoleService roleService;
    @Resource
    private UserFacade userFacade;

    /**
     * 系统管理 - 角色管理 - 角色管理 - 获取角色列表数据
     * @param key key
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @param sortField sortField
     * @param sortOrder sortOrder
     * @return String
     */
    @GetMapping("/basic/role/getRoleList")
    public String getRoleList(
            @RequestParam(defaultValue = "-1") String key,
            @RequestParam Integer pageIndex,
            @RequestParam Integer pageSize,
            @RequestParam(defaultValue = "-1") String sortField,@RequestParam(defaultValue = "-1") String sortOrder) {
        String loginUserLevel = userFacade.getAuthentication().getLevel();
        return roleService.selectRoleList(key,pageIndex,pageSize,sortField,sortOrder,loginUserLevel);
    }

    /**
     * 系统管理 - 角色管理 - 角色管理 - 根据ID查询角色详情
     * @param id id
     * @return Result
     */
    @GetMapping("/basic/role/{id}")
    public Result selectRoleById(@PathVariable String id) {
        return roleService.selectOne(id);
    }

    /**
     * 系统管理 - 角色管理 - 角色管理 - 保存角色信息（修改/新增）
     * @param request request
     * @param data data
     * @return Result
     */
    @Log(type = "新增", value = "保存角色信息（修改/新增）")
    @PostMapping("/basic/role/save")
    public Result saveRole(HttpServletRequest request,String data) {
        return roleService.save(data);
    }

    /**
     * 系统管理 - 角色管理 - 角色管理 - 根据ID删除角色
     * @param request request
     * @param id id
     * @return Result
     */
    @Log(type = "删除", value = "删除角色")
    @DeleteMapping("/basic/role/delete/{id}")
    public Result delRole(HttpServletRequest request,@PathVariable String id) {
        return roleService.deleteOne(id);
    }

    /**
     * 系统管理 - 角色管理 - 角色管理 - 模糊查询角色列表
     * @param reskey reskey
     * @return String
     */
    @GetMapping("/basic/user/getUserRoleList/{reskey}")
    public String getAllRoleList(@PathVariable String reskey) {
        UserDTO loginUserInfo = userFacade.getAuthentication();
        Result result = roleService.getAllRoleList(reskey,loginUserInfo.getLevel());
        String json = "";
        if(Constants.Number.NUM_ONE.equals(result.getCode())) {
            json = JsonUtil.toText(result.getData());
        }
        return json;
    }
}